//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DLC.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

//--------------------------------------------------------------------
/*void DLC::draw(){

} */
//--------------------------------------------------------------------
DLC* DLC::copiar(){
        DLC* dlc=new DLC(r,g,b);
        //dlc=this->copiar();
        dlc->setCentro(this->centro->copiar());

        Linea * linea;
        for(int i=1;i<=this->getLineas()->dameNumNodos();i++){
                linea=getLineas()->dameDato(i);
                linea=linea->copiar();

                dlc->anadeLinea(linea);
        }


        return dlc;



}
//--------------------------------------------------------------------
void DLC::mover(PV* p){
        this->centro->suma(centro,p);
        Linea * linea;
        for(int i=1;i<=this->getLineas()->dameNumNodos();i++){
                linea=getLineas()->dameDato(i);
                linea->mover(p);

        }


}
//--------------------------------------------------------------------
bool DLC::igual(DLC * d){
       bool b=this->igual(d);
       if(b && this->centro->igual(d->centro)) return true;
       return false;
}
//--------------------------------------------------------------------
bool DLC::guarda(ofstream & Archivo){

      //centro
            centro->guarda(Archivo);
      //numero de lineas
            int cantidad = this->getLineas()->dameNumNodos();
            Archivo << cantidad << endl;
      //color de las lineas
            Archivo << this->r << " " << this->g << " " << this->b << " " << endl;
     //cada uno de ellos
            Linea * lin;
            for (int i=0; i<cantidad; i++){
                lin = this->getLineas()->dameDato(i+1);
                lin->guarda(Archivo);
            }
     return Archivo.good();

}

bool DLC::abre(ifstream & Archivo){
       //centro
          centro->abre(Archivo);
       //numero de lineas
          int cantidad;
          Archivo >> cantidad;
       //color de las lineas
          Archivo >> this->r >> this->g >> this->b;
       //cada una de ellas
            Linea * lin;
            for (int i=0; i<cantidad; i++){
                lin = new Linea();
                lin->abre(Archivo);
                this->anadeLinea(lin);
            }
     return Archivo.good();

}

void DLC::giraPatron(GLfloat ang){

        for(int i=1;i<=this->getLineas()->dameNumNodos();i++){
                this->getLineas()->dameDato(i)->getOrigen()->rotaP(this->centro,ang);
                this->getLineas()->dameDato(i)->getDestino()->rotaP(this->centro,ang);

        }


}

void DLC::giraConCentro(PV * centro,GLfloat ang){
        //giro del centro
        this->centro->rotaP(centro,ang);

        //giro del resto de puntos
        for(int i=1;i<=this->getLineas()->dameNumNodos();i++){
                this->getLineas()->dameDato(i)->getOrigen()->rotaP(centro,ang);
                this->getLineas()->dameDato(i)->getDestino()->rotaP(centro,ang);

        }

}
